参考:javacv开发系列
新的用法(推荐)
为什么不需要安装opencv?
从javacv0.8开始,已经不需要本地安装opencv,直接通过引用opencv对应的系统平台的引用包即可
创建 Java 工程
添加maven依赖
1 2 3 4 5 6 7
| <dependency> <groupId>org.bytedeco</groupId> <artifactId>opencv-platform</artifactId> <version>4.4.0-1.5.4</version> </dependency>
|
测试环境
Main.java内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
| package com.liang.utils.opencv;
import org.bytedeco.javacv.CanvasFrame; import org.bytedeco.javacv.Frame; import org.bytedeco.javacv.FrameGrabber.Exception; import org.bytedeco.javacv.OpenCVFrameGrabber;
import javax.swing.*;
public class Main {
public static void main(String[] args) throws Exception, InterruptedException { OpenCVFrameGrabber grabber = new OpenCVFrameGrabber(0); grabber.start(); CanvasFrame canvas = new CanvasFrame("摄像头"); canvas.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE); canvas.setSize(1000, 600); canvas.setAlwaysOnTop(true);
while (true) { if (!canvas.isDisplayable()) { grabber.stop(); System.exit(2); } Frame frame=grabber.grab(); canvas.showImage(grabber.grab());
Thread.sleep(50); } } }
|
测试结果
旧的用法(不推荐)
安装 OpenCV-4.X
Windows
下载OpenCV OpenCV下载链接 选择maven支持的版本下载(最新版本可能还没有对应的jar包)
运行对应的.exe文件安装完成
安装完成后的目录
创建 Java 工程
添加maven依赖
1 2 3 4 5 6 7
| <dependency> <groupId>org.bytedeco</groupId> <artifactId>opencv-platform</artifactId> <version>4.4.0-1.5.4</version> </dependency>
|
测试环境
Main.java内容
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| package com.liang.utils;
import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.highgui.HighGui; import org.opencv.imgcodecs.Imgcodecs;
public class Main { static { System.loadLibrary(Core.NATIVE_LIBRARY_NAME); System.out.println("opencv\t" + Core.VERSION); }
public static void main(String[] args) { test(); }
public static void test() { Mat src = Imgcodecs.imread("C:\\Users\\zjz\\Desktop\\head.jpg"); HighGui.imshow("哈妮", src); HighGui.waitKey(1000); } }
|
修改 VM options
测试结果
参考
快速传送至:javacv入门指南:序章
javaCV系列文章:
javacv开发详解之1:调用本机摄像头视频
javaCV开发详解之2:推流器实现,推本地摄像头视频到流媒体服务器以及摄像头录制视频功能实现(基于javaCV-FFMPEG、javaCV-openCV)
javaCV开发详解之3:收流器实现,录制流媒体服务器的rtsp/rtmp视频文件(基于javaCV-FFMPEG)
javaCV开发详解之4:转流器实现(也可作为本地收流器、推流器,新增添加图片及文字水印,视频图像帧保存),实现rtsp/rtmp/本地文件转发到rtmp流媒体服务器(基于javaCV-FFMPEG)
javaCV开发详解之5:录制音频(录制麦克风)到本地文件/流媒体服务器(基于javax.sound、javaCV-FFMPEG)
javaCV开发详解之6:本地音频(话筒设备)和视频(摄像头)抓取、混合并推送(录制)到服务器(本地)
javaCV开发详解之7:让音频转换更加简单,实现通用音频编码格式转换、重采样等音频参数的转换功能(以pcm16le编码的wav转mp3为例)
javaCV开发详解之8:转封装在rtsp转rtmp流中的应用(无须转码,更低的资源消耗,更好的性能,更低延迟)
补充篇:
音视频编解码问题:javaCV如何快速进行音频预处理和解复用编解码(基于javaCV-FFMPEG)
音视频编解码问题:16/24/32位位音频byte[]转换为小端序short[],int[],以byte[]转short[]为例
实现给图片增加图片水印或者文字水印(也支持视频图像帧添加水印)
java原生实现屏幕设备遍历和屏幕采集(捕获)等功能
javacpp-ffmpeg系列:
javacpp-FFmpeg系列之1:视频拉流解码成YUVJ420P,并保存为jpg图片
javacpp-FFmpeg系列之2:通用拉流解码器,支持视频拉流解码并转换为YUV、BGR24或RGB24等图像像素数据
javacpp-FFmpeg系列之3: 图像数据转换(BGR与BufferdImage互转,RGB与BufferdImage互转)
javacpp-FFmpeg系列补充:FFmpeg解决avformat_find_stream_info检索时间过长问题
javacpp-opencv系列:
一、javaCV图像处理之1:实时视频添加文字水印并截取视频图像保存成图片,实现文字水印的字体、位置、大小、粗度、翻转、平滑等操作
二、javaCV图像处理之2:实时视频添加图片水印,实现不同大小图片叠加,图像透明度控制
三、javacv图像处理3:使用opencv原生方法遍历摄像头设备及调用(方便多摄像头遍历及调用,相比javacv更快的摄像头读取速度和效率,方便读取后的图像处理)
四、javacv图像处理系列:国内车辆牌照检测识别系统(万份测试准确率99.7%以上)